package collection;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;

public class LambdaDemo1 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        //匿名内部类写法
        Collections.sort(list, new Comparator<String>() {
            /*
            compare()方法用于定义o1和o2的大小, 并且返回值表达大小关系
            1)返回值是0, 表示o1和o2相等
            2)如果返回值>0, 表示o1>o2
            3)如果返回值<0, 表示o1<o2
            结论:
                > 前面的减后面的 ----- 升序
                > 后面的减前面的 ----- 降序
             */
            public int compare(String o1, String o2) {
                return o1.length() - o2.length();//升序排列
                //return o2.length() - o1.length();//降序排列
            }
        });
        //Lambda表达式写法
        Collections.sort(list, (String o1, String o2) -> {
            return o1.length()-o2.length();
        });

        //Lambda表达式中的参数类型可以不写
        Collections.sort(list, (o1, o2) -> {
            return o1.length()-o2.length();
        });

        //Lambda表达式方法体中只有一句代码，方法体的{}可以不写，如果这句话中有return，也一并不写
        Collections.sort(list, (o1, o2) -> o1.length()-o2.length());

        //Lambda表达式的方法参数只有1个,那么()可以忽略不写---本案例不适用

    }
}
